package com.dengqi.mymodule.tools;

import android.content.res.Resources;

/**
 * 获取屏幕3种方法
 * 第一种：
 * WindowManager manager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
 * DisplayMetrics outMetrics = new DisplayMetrics();
 * manager.getDefaultDisplay().getMetrics(outMetrics);
 * int width = outMetrics.widthPixels;
 *
 * 第二种：
 * int width = this.getResources().getDisplayMetrics().widthPixels;
 *
 * 第三种：
 * int width = Resources.getSystem().getDisplayMetrics().widthPixels;
 *
 */
public class DisplayUtils {

    // 根据手机的分辨率将dp的单位转成px(像素)
    public static int dip2px(float dpValue) {
        final float scale = Resources.getSystem().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }

    // 根据手机的分辨率将px(像素)的单位转成dp
    public static int px2dip(float pxValue) {
        final float scale = Resources.getSystem().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }

    // 将px值转换为sp值
    public static int px2sp(float pxValue) {
        final float fontScale = Resources.getSystem().getDisplayMetrics().scaledDensity;
        return (int) (pxValue / fontScale + 0.5f);
    }

    // 将sp值转换为px值
    public static int sp2px(float spValue) {
        final float fontScale = Resources.getSystem().getDisplayMetrics().scaledDensity;
        return (int) (spValue * fontScale + 0.5f);
    }

    // 屏幕宽度（像素）
    public static int getScreenWidth() {
        return Resources.getSystem().getDisplayMetrics().widthPixels;
    }

    // 屏幕高度（像素）
    public static int getScreenHeight() {
        return Resources.getSystem().getDisplayMetrics().heightPixels;
    }

    public static float getScreenDensity() {
        return Resources.getSystem().getDisplayMetrics().density;
    }

    public static int getDensityDpi() {
        return Resources.getSystem().getDisplayMetrics().densityDpi;
    }
}
